package acceso.listener;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class Correo_Listener extends TimerTask
        implements ServletContextListener {

    private Timer timer;

    public void contextInitialized(ServletContextEvent evt) {
        this.timer = new Timer();
        this.timer.schedule(this, 0L, 300000L);
    }

    public void contextDestroyed(ServletContextEvent evt) {
        this.timer.cancel();
    }

    public void run() {
        ContenedorLista con = new ContenedorLista();
        List l = new ArrayList();
        try {
            l = con.getCorreos();
            System.out.println("------------------------------------------------------------------------------");
            System.out.println("cantidad de correo x enviar:---------------------------->" + l.size());
            System.out.println("------------------------------------------------------------------------------");
        } catch (SQLException ex) {
            ex.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        Iterator it = l.iterator();
        String id_correo_ = "";
        String no_asunto = "";
        String no_remite = "";
        String msj = "";
        String to = "";
        String cc = "";
        String cco = "";
        String ti_conten = "";
        String id_correo = "";
        String il_adjunt = "";
        String co_adjunt = "";
        String no_adjunt = "";
        String il_compre = "";
        String no_respon = "";
        boolean envio = true;

        while (it.hasNext()) {
            envio = false;
            CorreoItem cor = (CorreoItem) it.next();
            id_correo = cor.getId_correo();
            String ti_destin = "";
            String no_destin = "\"" + cor.getNo_destin() + "\" <" + cor.getEm_destin() + ">";

            if (!id_correo.equals(id_correo_)) {
                if (!id_correo_.equals("")) {
                    envio = true;
                    System.out.println("Para: " + to + " cc: " + cc + " cco: " + cco + " remite: " + no_remite + " msj: " + msj + " replyto: " + no_respon);
                    try {
                        Mail.enviarMensajeMail(to, cc, cco, no_remite, "correo.accesocrediticio.com", no_asunto, msj, ti_conten, il_adjunt, co_adjunt, no_adjunt, il_compre, no_respon);
                        con.updateCorreo(id_correo_, "E");
                    } catch (SQLException ex) {
                        ex.printStackTrace();
                    } catch (Exception e) {
                        e.printStackTrace();
                        try {
                            con.updateCorreo(id_correo_, "F");
                        } catch (SQLException ex) {
                            ex.printStackTrace();
                        } catch (Exception e2) {
                            e2.printStackTrace();
                        }
                    }
                }
                to = "";
                cc = "";
                cco = "";
                no_remite = "\"" + cor.getNo_remite() + "\" <" + cor.getEm_remite() + ">";
                no_respon = "";

                no_asunto = cor.getNo_asunto();
                ti_conten = cor.getTi_conten();
                msj = cor.getNo_cuerpo();
                il_adjunt = cor.getIl_adjunt();
                co_adjunt = cor.getCo_adjunt();
                no_adjunt = cor.getNo_adjunt();
                il_compre = cor.getIl_compre();
                id_correo_ = id_correo;

                if ((cor.getEm_respon() != null) && (!cor.getEm_respon().equals(""))) {
                    no_respon = "<" + cor.getEm_respon() + ">";

                    if ((cor.getNo_respon() != null) && (!cor.getNo_respon().equals(""))) {
                        no_respon = "\"" + cor.getNo_respon() + "\"" + no_respon;
                    } else {
                        no_respon = "\"\"" + no_respon;
                    }
                }

            }

            ti_destin = cor.getTi_destin();
            String coma = ",";
            if (ti_destin.equals("P")) {
                if (to.equals("")) {
                    coma = "";
                }
                to = to + coma + no_destin;
            }
            if (ti_destin.equals("C")) {
                if (cc.equals("")) {
                    coma = "";
                }
                cc = cc + coma + no_destin;
            }
            if (ti_destin.equals("O")) {
                if (cco.equals("")) {
                    coma = "";
                }
                cco = cco + coma + no_destin;
            }
        }
        if (!envio) {
            System.out.println("Para: " + to + " cc: " + cc + " cco: " + cco + " remite: " + no_remite + " msj: " + msj + " ReplyTo: " + no_respon);
            try {
                Mail.enviarMensajeMail(to, cc, cco, no_remite, "correo.accesocrediticio.com", no_asunto, msj, ti_conten, il_adjunt, co_adjunt, no_adjunt, il_compre, no_respon);
                con.updateCorreo(id_correo_, "E");
            } catch (SQLException ex) {
                ex.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
                try {
                    con.updateCorreo(id_correo_, "F");
                } catch (SQLException ex) {
                    ex.printStackTrace();
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
        }
    }
}
